/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package pe.gov.mtc.dgac.licencias.bean;

import java.io.Serializable;
import java.util.Collection;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author elvis
 */
@Entity
@Table(name = "AUDITOR_TIPOAUDIT")
@NamedQueries({@NamedQuery(name = "AuditorTipoauditTO.findByFecInicio", query = "SELECT a FROM AuditorTipoauditTO a WHERE a.fecInicio = :fecInicio"), @NamedQuery(name = "AuditorTipoauditTO.findByFecTermino", query = "SELECT a FROM AuditorTipoauditTO a WHERE a.fecTermino = :fecTermino"), @NamedQuery(name = "AuditorTipoauditTO.findByCodAuditorTipo", query = "SELECT a FROM AuditorTipoauditTO a WHERE a.codAuditorTipo = :codAuditorTipo")})
public class AuditorTipoauditTO implements Serializable {
    
    private static final long serialVersionUID = 1L;
    
    @Column(name = "FEC_INICIO", nullable = false)
    @Temporal(TemporalType.DATE)
    private Date fecInicio;
    @Column(name = "FEC_TERMINO", nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecTermino;
    @Column(name = "ESTADO")
    private Integer estado;
    
    @Id
    @GeneratedValue(generator = "SEQAUDITORAUDIT")
    @SequenceGenerator(name="SEQAUDITORAUDIT", sequenceName="SEQ_AUDITORAUDIT",allocationSize=1)
    @Column(name = "COD_AUDITOR_TIPO", nullable = false)
    private Long codAuditorTipo;
    
    @JoinColumn(name = "COD_AUDITOR", referencedColumnName = "COD_AUDITOR")
    @ManyToOne
    private AuditorTO codAuditor;
    @JoinColumn(name = "COD_SECCION", referencedColumnName = "COD_SECCION")
    @ManyToOne
    private SeccionTO codSeccion;
    @JoinColumn(name = "COD_TIPO_AUDITOR", referencedColumnName = "COD_TIPO_AUDITOR")
    @ManyToOne
    private TipoAuditorTO codTipoAuditor;
    @OneToMany(mappedBy = "codAuditorTipo")
    private Collection<AuditoriaTO> auditoriaTOCollection;

    public AuditorTipoauditTO() {
        this.codAuditor = new  AuditorTO();
        this.codSeccion = new SeccionTO();
        this.codTipoAuditor = new TipoAuditorTO();
    }

    public AuditorTipoauditTO(Long codAuditorTipo) {
        this.codAuditorTipo = codAuditorTipo;
        this.codAuditor = new  AuditorTO();
        this.codSeccion = new SeccionTO();
        this.codTipoAuditor = new TipoAuditorTO();
    }

    public AuditorTipoauditTO(Long codAuditorTipo, Date fecInicio, Date fecTermino) {
        this.codAuditorTipo = codAuditorTipo;
        this.fecInicio = fecInicio;
        this.fecTermino = fecTermino;
        this.codAuditor = new  AuditorTO();
        this.codSeccion = new SeccionTO();
        this.codTipoAuditor = new TipoAuditorTO();
    }

    public Date getFecInicio() {
        return fecInicio;
    }

    public void setFecInicio(Date fecInicio) {
        this.fecInicio = fecInicio;
    }

    public Date getFecTermino() {
        return fecTermino;
    }

    public void setFecTermino(Date fecTermino) {
        this.fecTermino = fecTermino;
    }

    public Long getCodAuditorTipo() {
        return codAuditorTipo;
    }

    public void setCodAuditorTipo(Long codAuditorTipo) {
        this.codAuditorTipo = codAuditorTipo;
    }

    public AuditorTO getCodAuditor() {
        return codAuditor;
    }

    public void setCodAuditor(AuditorTO codAuditor) {
        this.codAuditor = codAuditor;
    }

    public SeccionTO getCodSeccion() {
        return codSeccion;
    }

    public void setCodSeccion(SeccionTO codSeccion) {
        this.codSeccion = codSeccion;
    }

    public TipoAuditorTO getCodTipoAuditor() {
        return codTipoAuditor;
    }

    public void setCodTipoAuditor(TipoAuditorTO codTipoAuditor) {
        this.codTipoAuditor = codTipoAuditor;
    }

    public Collection<AuditoriaTO> getAuditoriaTOCollection() {
        return auditoriaTOCollection;
    }

    public void setAuditoriaTOCollection(Collection<AuditoriaTO> auditoriaTOCollection) {
        this.auditoriaTOCollection = auditoriaTOCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (codAuditorTipo != null ? codAuditorTipo.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof AuditorTipoauditTO)) {
            return false;
        }
        AuditorTipoauditTO other = (AuditorTipoauditTO) object;
        if ((this.codAuditorTipo == null && other.codAuditorTipo != null) || (this.codAuditorTipo != null && !this.codAuditorTipo.equals(other.codAuditorTipo))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "licencias_dto.p2.AuditorTipoauditTO[codAuditorTipo=" + codAuditorTipo + "]";
    }

    public Integer getEstado() {
        return estado;
    }

    public void setEstado(Integer estado) {
        this.estado = estado;
    }

}
